export default {
  // 计算当前日期星座
  getHoroscope(date) {
    const c = [
      '摩羯',
      '水瓶',
      '双鱼',
      '白羊',
      '金牛',
      '双子',
      '巨蟹',
      '狮子',
      '处女',
      '天秤',
      '天蝎',
      '射手',
      '摩羯'
    ]
    date = new Date(date)
    const month = date.getMonth() + 1
    const day = date.getDate()
    const startMonth = month - (day - 14 < '865778999988'.charAt(month))
    return c[startMonth] + '座'
  },
  // 计算指定时间与当前的时间差
  sumAge(data) {
    const dateBegin = new Date(data.replace(/-/g, '/'))
    const dateEnd = new Date() //获取当前时间
    const dateDiff = dateEnd.getTime() - dateBegin.getTime() //时间差的毫秒数
    const dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000)) //计算出相差天数
    const leave1 = dateDiff % (24 * 3600 * 1000) //计算天数后剩余的毫秒数
    const hours = Math.floor(leave1 / (3600 * 1000)) //计算出小时数
    //计算相差分钟数
    const leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数
    const minutes = Math.floor(leave2 / (60 * 1000)) //计算相差分钟数
    //计算相差秒数
    const leave3 = leave2 % (60 * 1000) //计算分钟数后剩余的毫秒数
    const seconds = Math.round(leave3 / 1000)
    return dayDiff + '天 ' + hours + '小时 '
  },
  // 获取聊天时间（相差300s内的信息不会显示时间）
  getChatTime(v1, v2) {
    v1 = v1.toString().length < 13 ? v1 * 1000 : v1
    v2 = v2.toString().length < 13 ? v2 * 1000 : v2
    if ((parseInt(v1) - parseInt(v2)) / 1000 > 300) {
      return this.gettime(v1)
    }
  },
  // 人性化时间格式
  gettime(shorttime) {
    shorttime = shorttime.toString().length < 13 ? shorttime * 1000 : shorttime
    let now = new Date().getTime()
    let cha = (now - parseInt(shorttime)) / 1000

    if (cha < 43200) {
      // 当天
      return this.dateFormat(new Date(shorttime), '{A} {t}:{ii}')
    } else if (cha < 518400) {
      // 隔天 显示日期+时间
      return this.dateFormat(new Date(shorttime), '{Mon}月{DD}日 {A} {t}:{ii}')
    } else {
      // 隔年 显示完整日期+时间
      return this.dateFormat(new Date(shorttime), '{Y}-{MM}-{DD} {A} {t}:{ii}')
    }
  },

  parseNumber(num) {
    return num < 10 ? '0' + num : num
  },

  dateFormat(date, formatStr) {
    let dateObj = {},
      rStr = /\{([^}]+)\}/,
      mons = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']

    dateObj['Y'] = date.getFullYear()
    dateObj['M'] = date.getMonth() + 1
    dateObj['MM'] = this.parseNumber(dateObj['M'])
    dateObj['Mon'] = mons[dateObj['M'] - 1]
    dateObj['D'] = date.getDate()
    dateObj['DD'] = this.parseNumber(dateObj['D'])
    dateObj['h'] = date.getHours()
    dateObj['hh'] = this.parseNumber(dateObj['h'])
    dateObj['t'] = dateObj['h'] > 12 ? dateObj['h'] - 12 : dateObj['h']
    dateObj['tt'] = this.parseNumber(dateObj['t'])
    dateObj['A'] = dateObj['h'] > 12 ? '下午' : '上午'
    dateObj['i'] = date.getMinutes()
    dateObj['ii'] = this.parseNumber(dateObj['i'])
    dateObj['s'] = date.getSeconds()
    dateObj['ss'] = this.parseNumber(dateObj['s'])

    while (rStr.test(formatStr)) {
      formatStr = formatStr.replace(rStr, dateObj[RegExp.$1])
    }
    return formatStr
  },
  // 获取年龄
  getAgeByBirthday(data) {
    let birthday = new Date(data.replace(/-/g, '/'))
    let d = new Date()
    return (
      d.getFullYear() -
      birthday.getFullYear() -
      (d.getMonth() < birthday.getMonth() ||
      (d.getMonth() == birthday.getMonth() && d.getDate() < birthday.getDate())
        ? 1
        : 0)
    )
  }
}
